import 'package:easy_refresh/easy_refresh.dart';
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:taonile/config/config.dart';

import '../entity/asset_general_detail_entity.dart';
import '../entity/user_info_entity.dart';
import '../http/api.dart';
import '../provider/userinfo_provider.dart';
import '../routers/routers.dart';
import '../views/default_views.dart';
import '../views/dialog_manager.dart';

///
/// 资产金券页面
///
class AssetGoldDetail extends StatefulWidget {
  const AssetGoldDetail({Key? key}) : super(key: key);

  @override
  State<AssetGoldDetail> createState() => _AssetGoldDetailState();
}

class _AssetGoldDetailState extends State<AssetGoldDetail> {
  late UserInfoEntity infoEntity;
  var page = 1;
  List<AssetGeneralDetailDataData> datas = [];

  @override
  void initState() {
    super.initState();
    getDatas();
  }

  getDatas() async {
    dynamic result = await Api.getassetDetail(
        {'page': page.toString(), 'limit': '20', 'type': 'asset_vouchers'});
    AssetGeneralDetailEntity entity = AssetGeneralDetailEntity.fromJson(result);

    setState(() {
      if (page == 1) {
        datas.clear();
      }

      if (entity.data.data.isNotEmpty) {
        page++;
        datas.addAll(entity.data.data);
      }
    });
  }

  ///
  /// 请求个人中心接口
  ///
  getUserInfo(Function onSucces) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String? token = prefs.getString("token");
    if (token != null) {
      dynamic users = await Api.getUserinfo();
      Map<String, dynamic> resultUsers = Map.from(users);
      UserInfoEntity infoEntity = UserInfoEntity.fromJson(resultUsers);
      onSucces(infoEntity);
    }
  }

  Color getMoneyColor(String money) {
    if (money.startsWith('-')) {
      return Colors.red;
    } else {
      return Config.colorMain;
    }
  }

  Widget getListItem(int index) {
    return Container(
      height: 124.w,
      padding: EdgeInsets.symmetric(vertical: 20.w, horizontal: 20.w),
      decoration: BoxDecoration(
        border: Border(bottom: BorderSide(width: 3.w, color: Config.colorDivider)),
      ),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                datas[index].memo,
                style: TextStyle(
                  fontSize: 24.w,
                  color: Config.colorText1,
                ),
              ),
              Padding(padding: EdgeInsets.only(top: 8.w)),
              Text(
                datas[index].createdAt,
                style: TextStyle(
                  fontSize: 24.w,
                  color: Config.colorText3,
                ),
              ),
            ],
          ),
          Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                datas[index].money,
                style: TextStyle(
                  fontSize: 24.w,
                  color: getMoneyColor(datas[index].money),
                ),
              ),
              // Padding(padding: EdgeInsets.only(top: 8.w)),
              // Text(
              //   datas[index].ext,
              //   style: TextStyle(
              //     fontSize: 24.w,
              //     color: Config.colorText1,
              //   ),
              // ),
            ],
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    infoEntity = Provider.of<UserInfoProvider>(context).userInfo;
    return Scaffold(
        backgroundColor: Config.colorBg2,
        appBar: AppBar(
          title: const Text('资产金券'),
          centerTitle: true,
        ),
        body: SizedBox(
          width: double.infinity,
          height: double.infinity,
          child: Stack(
            children: [
              Container(
                width: double.infinity,
                height: 200.w,
                padding: EdgeInsets.symmetric(vertical: 25.w, horizontal: 20.w),
                margin: EdgeInsets.fromLTRB(30.w, 30.w, 30.w, 0),
                decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(12.w),
                ),
                child: Column(
                  children: [
                    Column(
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: [
                            Image.asset(
                              'assets/images/icon_mine_gold.png',
                              width: 30.w,
                              height: 30.w,
                            ),
                            Padding(
                              padding: EdgeInsets.only(left: 6.w),
                            ),
                            Text(
                              "资产金券",
                              style: TextStyle(fontSize: 24.sp, color: Config.colorText1),
                            ),
                          ],
                        ),
                        Padding(
                          padding: EdgeInsets.only(top: 8.w),
                        ),
                        Text(
                          infoEntity.data.assetVouchers,
                          style: TextStyle(
                              fontSize: 28.sp,
                              color: Config.colorMain,
                              fontWeight: FontWeight.bold),
                        ),
                      ],
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Container(
                          margin: EdgeInsets.only(top: 20.w),
                          width: 120.w,
                          height: 46.w,
                          child: ElevatedButton(
                            clipBehavior: Clip.antiAlias,
                            onPressed: () => {
                              Routes.navigateTo(context, Routes.mineAssetExchange,
                                      params: {'amount': infoEntity.data.assetVouchers})
                                  .then((value) => getUserInfo((UserInfoEntity infoEntity) {
                                        Provider.of<UserInfoProvider>(context, listen: false)
                                            .changeUserinfo(infoEntity);
                                        page = 1;
                                        getDatas();
                                      })),
                            },
                            style: ButtonStyle(
                              elevation: MaterialStateProperty.all(0),
                              backgroundColor: MaterialStateProperty.all(Colors.white),
                              shape: MaterialStateProperty.all(
                                RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(24.w),
                                ),
                              ),
                              side: MaterialStateProperty.all(
                                BorderSide(color: Config.colorMain, width: 2.w),
                              ),
                            ),
                            child: Text(
                              '兑换',
                              style: TextStyle(fontSize: 18.sp, color: Config.colorMain),
                            ),
                          ),
                        ),
                        Padding(
                          padding: EdgeInsets.only(left: 20.w, right: 20.w),
                        ),
                        Container(
                          margin: EdgeInsets.only(top: 20.w),
                          width: 120.w,
                          height: 46.w,
                          child: ElevatedButton(
                            clipBehavior: Clip.antiAlias,
                            onPressed: () => {
                              Routes.navigateTo(context, Routes.mineAssetTransition,
                                      params: {'amount': infoEntity.data.assetVouchers})
                                  .then((value) => getUserInfo((UserInfoEntity infoEntity) {
                                        Provider.of<UserInfoProvider>(context, listen: false)
                                            .changeUserinfo(infoEntity);
                                        page = 1;
                                        getDatas();
                                      }))
                            },
                            style: ButtonStyle(
                              elevation: MaterialStateProperty.all(0),
                              backgroundColor: MaterialStateProperty.all(Colors.white),
                              shape: MaterialStateProperty.all(
                                RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(24.w),
                                ),
                              ),
                              side: MaterialStateProperty.all(
                                BorderSide(color: Config.colorMain, width: 2.w),
                              ),
                            ),
                            child: Text(
                              '互转',
                              style: TextStyle(fontSize: 18.sp, color: Config.colorMain),
                            ),
                          ),
                        ),
                        Padding(
                          padding: EdgeInsets.only(left: 20.w, right: 20.w),
                        ),
                        Container(
                          margin: EdgeInsets.only(top: 20.w),
                          width: 120.w,
                          height: 46.w,
                          child: ElevatedButton(
                            clipBehavior: Clip.antiAlias,
                            onPressed: () => {
                              Routes.navigateTo(context, Routes.mineGetCash,
                                      params: {'amount': infoEntity.data.assetVouchers})
                                  .then((value) => getUserInfo((UserInfoEntity infoEntity) {
                                        Provider.of<UserInfoProvider>(context, listen: false)
                                            .changeUserinfo(infoEntity);
                                        page = 1;
                                        getDatas();
                                      }))
                            },
                            style: ButtonStyle(
                              elevation: MaterialStateProperty.all(0),
                              backgroundColor: MaterialStateProperty.all(Colors.white),
                              shape: MaterialStateProperty.all(
                                RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(24.w),
                                ),
                              ),
                              side: MaterialStateProperty.all(
                                BorderSide(color: Config.colorMain, width: 2.w),
                              ),
                            ),
                            child: Text(
                              '提现',
                              style: TextStyle(fontSize: 18.sp, color: Config.colorMain),
                            ),
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              ),
              Container(
                width: double.infinity,
                height: double.infinity,
                padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0.w),
                margin: EdgeInsets.only(left: 30.w, right: 30.w, bottom: 30.w, top: 255.w),
                decoration: BoxDecoration(
                  color: (Config.colorWhite),
                  borderRadius: BorderRadius.circular(12.w),
                ),
                child: datas.isNotEmpty
                    ? EasyRefresh(
                        header: const MaterialHeader(),
                        footer: const MaterialFooter(),
                        onRefresh: () async {
                          await Future.delayed(const Duration(milliseconds: 200), () {
                            page = 1;
                            getDatas();
                          });
                        },
                        onLoad: () async {
                          getDatas();
                        },
                        child: ListView.builder(
                          // physics: const NeverScrollableScrollPhysics(),
                          itemCount: datas.length,
                          padding: EdgeInsets.symmetric(vertical: 1.w, horizontal: 1.w),
                          itemBuilder: (BuildContext context, int index) {
                            return getListItem(index);
                          },
                        ),
                      )
                    : showNullData(),
              ),
            ],
          ),
        ));
  }
}
